三次握手协议指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互:
为了提供可靠的传送, TCP 在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。 TCP 总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到 TCP
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的 SYN 包( syn=j )开设一个条目,该条目表明服务器已收到 SYN 包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于 Syn_RECV 状态,当服务器收到客户的确认包时,删除该条目,服务器进入 ESTABLISHED 状态
SYN-ACK 重传次数:服务器发送完 SYN - ACK 包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同
半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到 SYN 包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为 Timeout 时间、 SYN_RECV 存活时间
当客户端和服务器在网络中使用 TCP 协议发起会话时,在服务器内存中会开辟一小块缓冲区来处理会话过程中消息的“握手”交换。会话建立数据包包含一个 SYN 片段,用于标识消息交换中的序列号。而 SYN FLOOD 试图摧毁这一过程。攻击者快速发送一连串连接请求,之后并不响应服务器发送回来的应答,造成三次握手无法完成,在服务器上留下半打开的连接,分配给他们的缓存也被保留下来,使其他程序不能使用服务器。尽管缓冲区中的数据包在没有应答超过一段时间(通常 3min )就会被丢弃,但大量虚假请求的后果是用于建立会话的合法请求难以建立。
会话劫持的常用方法:使用源路由( source Routed ) IP 数据包。